In the recent years, cloud computing has evolved as a general concept which allows provisioning of computer services and resources in form of an online service. Through cloud computing, clients can store data remotely and execute remote applications that are not installed on a local computer. Cloud computing generally involves provisioning of an abstraction to a large computing infrastructure which comprises large groups of networked remote servers, typically (but not necessarily) provided in a data center facility.
Services models provided in connection with cloud computing typically comprise Infrastructure as a Service (IaaS), Platform as a Service (PaaS) and Software as a Service (SaaS). In IaaS, clients are provided access to physical or virtualized computer hardware resources, such as virtualized compute, network and storage units. In PaaS, clients are provided access to software execution platform environments and, in SaaS, clients are provided access to application programs which are executed on the cloud infrastructure. SaaS is also known as “software on demand”.
In a data center, such services may be realized using virtualization technology. According to the concept of virtualization, one or more virtual machines may be executed on a single physical computing unit, such as a server or server blade. Virtual machines are logically separated from each other and share processor, memory and/or network resources of the underlying computing unit. So-called hypervisors are employed on the computing units for the allocation of hardware resources to the virtual machines executed thereon. An operating system may be installed on each virtual machine, just like on a physical machine, which may be used to execute client applications thereon.
A cloud infrastructure management system typically decides on the allocation of virtual machines to the physical computing units available in the data center. Such allocation may be determined taking into account the resource requirements of the applications to be executed as well as the physical resources of the computing units themselves. If an allocation needs to be changed, virtual machines may be migrated from one computing unit to another by the cloud infrastructure management system. Migration may be performed on virtual machines while their execution continues (so-called “live migration”), or may require to shut down a respective virtual machine on the donor computing host and instantiate the virtual machine again on a destination computing host.
There may be a need to monitor a specific virtual machine or an application executed thereon for trouble-shooting purposes. This may be the case, for example, if an application executed on the virtual machine reveals resource consumption to an abnormal extent. Also, it may be necessary to monitor network traffic generated by an application and analyze the traffic for debugging purposes, performance analysis, protocol compliance verification or the like. Monitoring itself, however, may create an additional load to the virtual machine, to the underlying computing unit, or to other components affected by the ongoing monitoring activity which, in some cases, may overload the resources of these components. This may result in unwanted application behavior, service level degradation or other potential malfunction.